/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ec.edu.espe.distribuidas.aseguradora.servicio;

import ec.edu.espe.distribuidas.aseguradora.dao.PlanFacade;
import ec.edu.espe.distribuidas.aseguradora.exception.ErrorValidacionException;
import ec.edu.espe.distribuidas.aseguradora.modelo.Plan;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

/**
 *
 * @author alejandro
 */
@Stateless
@LocalBean
public class PlanServicio {
    
    @EJB
    private PlanFacade planFacade;
    
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void crear(Plan plan){
        
        Plan planTemp=this.planFacade.find(plan.getCodPlan());
        if(planTemp==null)
        {
            this.planFacade.create(plan);
        }else{
            System.err.println("El codigo del plan ya existe"+plan.getCodPlan());
            ErrorValidacionException evex= new ErrorValidacionException("El codigo del plan ya se encuentra registado");
            throw evex;
         }
    }
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void modificar(Plan plan){
        this.planFacade.edit(plan);
    }
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void eliminar(String codigoPlan)
    {
        Plan planTemp=this.planFacade.find(codigoPlan);
        if(planTemp!=null)
        {
            this.planFacade.remove(planTemp);
        }else{
            System.err.println("El codigo del plan"+codigoPlan+" no existe");
            ErrorValidacionException evex= new ErrorValidacionException("El codigo"+codigoPlan+"no existe" );
            throw evex;
         }
     }
    
    public Plan buscarPorCodigo(String codigo){
        return this.planFacade.find(codigo);
    }
    
    public List<Plan> obtenerTodos()
    {
        return this.planFacade.findAll();
        
    }
    
}
